#ifndef CAMERA_H_
#define CAMERA_H_

#include "model/point.h"
#include "model/cube.h"
#include "model/ifollower.h"
#include <GL/gl.h>
#include <GL/glu.h>

class Camera : public IFollower{
	protected:
		float zoomFactor;
	public:
		Camera(){
			zoomFactor=1.0f;
		}

		virtual ~Camera(){}

		virtual void applyCamera()=0;
		virtual void move(float offset)=0;

		virtual Point getAt()=0;
		virtual Point getEye()=0;
		virtual Point getUp()=0;

		virtual void addZoom(float factor){
			zoomFactor+=factor;
			if(zoomFactor<=0)
				zoomFactor-=factor;
		}

		virtual bool isBoxVisible(const Cube& box)const=0;
		virtual void updatePosition(const Point& position,const Point& direction, PathInfo* info)=0;
};

#endif /* CAMERA_H_ */
